import Cookies from 'js-cookie'
import { useUserStoreHook } from '/@/store/modules/user'

const TokenKey = 'authorized-token'

type paramsMapType = {
    name: string
    expires: number
    accessToken: string
}

// 获取token
export function getToken() {
    // 此处与TokenKey相同，此写法解决初始化时Cookies中不存在TokenKey报错
    return Cookies.get('authorized-token')
}

// 设置token以及过期时间（cookies、sessionStorage各一份）
// 后端需要将用户信息和token以及过期时间都返回给前端，过期时间主要用于刷新token
export function setToken(data) {
    const { accessToken, expires, name } = data
    // 提取关键信息进行存储
    const paramsMap: paramsMapType = {
        name,
        expires: Date.now() + parseInt(expires),
        accessToken
    }
    const dataString = JSON.stringify(paramsMap)
    useUserStoreHook().SET_TOKEN(accessToken)
    useUserStoreHook().SET_NAME(name)
    expires > 0
        ? Cookies.set(TokenKey, dataString, {
              expires: expires / 86400000
          })
        : Cookies.set(TokenKey, dataString)
    sessionStorage.setItem(TokenKey, dataString)
}

// 删除token
export function removeToken() {
    Cookies.remove(TokenKey)
    sessionStorage.removeItem(TokenKey)
}
